# -*- coding: utf-8 -*-
# author: AZJ
# date: 2024/11/6
# 假如命运扼住了你的咽喉，你就去挠她的咯吱窝

# 调用方法，传入4个键盘输入的数字，并求和。返回打印。
def add():
    num = 0
    for i in range(1,5):
        number = input(f"请输入第{i}个数字>>")
        if not number.isdigit():
            print("您输入的不是数字！")
            break
        num += int(number)
    print("四个数字和为:", num)
    return num

# 编写一个方法，传入一个列表，并求出列表的总和。
def subtract(num_list):
    num = 0
    for i in num_list:
        num = num + int(i)
    print(num)
    return num

# 编写一个方法，打印"99乘法表"
def multiply_99():
    # 1*1 1*2 1*3 1*4 1*5 1*6 1*7 1*8 1*9
    # 2*2 2*3 2*4 2*5 2*6 2*7 2*8 2*9
    # 3*3 3*4 3*5 3*6 3*7 3*8 3*9
    # 4*4 4*5 4*6 4*7 4*8 4*9
    for i in range(1,10):
        for j in range(1,10):
            if j >= i:
                print(i, "*", j, "=", i * j, end="\t")
        print("")

# 接收一个列表和一个数字，返回这个列表中对应数字的数据，如果数字超出列表长度范围，返回-1
def load_list(n_list, index):
    if index > len(n_list) or index < 0:
        return -1
    else:
        return n_list[index]

# 同样使用方法的递归，求1~300所有数的和。（方法调用自己完成操作）
def sum_300(value_num, index):
    value_num = value_num + index
    while index == 300:
        return value_num
    return sum_300(value_num, index + 1)

# 用三个列表表示三个部门的人员情况(一个员工可以同时在多个部门存在)
# 求部门员工总共有多少人
def all_man(dp_list):
    man_set_list = []
    for department in dp_list:
        for i in department:
            man_set_list.append(i)
    # print(man_tup)
    result_set = set(man_set_list)
    # print(result_set)
    num = len(result_set)
    print("总人数为", num)
    return num
    # 求只在一个部门存在的人的数量和对应的名字
    # 在两个部门以及以上的人员有哪些

# 求只在一个部门存在的人的数量和对应的名字
def only_one(dp_list):
    only_one_list = []
    drop_list = []
    for index in range(len(dp_list)):
        for i in dp_list[index]:
            if index == 0:
                # print(i, i not in dp_list[index+1] and i not in dp_list[index+2] and i not in only_one_list)
                if i not in dp_list[index+1] and i not in dp_list[index+2] and i not in drop_list:
                    only_one_list.append(i)
                else:
                    drop_list.append(i)
                    continue
            elif index == 1:
                if i not in dp_list[index+1] and i not in only_one_list and i not in drop_list:
                    only_one_list.append(i)
                else:
                    drop_list.append(i)
                    continue
            elif index == 2:
                if i not in only_one_list and i not in drop_list:
                    only_one_list.append(i)
                else:
                    drop_list.append(i)
                    continue
    print("只在一个部门存在的人的数量为", len(only_one_list), "\n他们是", only_one_list)
    # 在两个部门以及以上的人员有哪些
    print("两个部门及以上的人有, ", set(drop_list))
    return only_one_list, set(drop_list)

# 编程实现NxN的乘法表的倒叙打印
def mul_99_DESC():
    for i in range(1,10):
        for j in range(1,10):
            # if j >= i:
            if j <= 10 - i:
                print(j, "*", 10 - i, "=", j * (10 - i), end="\t")
        print("")

if __name__ == '__main__':
    # add()
    
    # subtract([1, 2, 3, 4, 5])

    # multiply_99()

    # print(load_list([1,2,3,4,5], 0))

    # print(sum_300(0, 1))

    '''department_list = []
    test_ap = ['小明','小张','小黄','小杨']
    research_ap = ['小黄','小李','小王','小杨','小周']
    market_ap = ['小杨','小张','小吴','小冯','小周']
    department_list.append(test_ap)
    department_list.append(research_ap)
    department_list.append(market_ap)
    # all_man(department_list)
    one_list, drop_list = only_one(department_list)'''

    mul_99_DESC()